package offer;

import java.util.Stack;

public class offerII_0025 {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        Stack<Integer> s1=new Stack<>();
        Stack<Integer> s2=new Stack<>();
        ListNode p=l1;
        while(p!=null){
            s1.push(p.val);
            p=p.next;
        }
        p=l2;
        while(p!=null){
            s2.push(p.val);
            p=p.next;

        }
        ListNode q;
        p=null;
        int flag=0;
        while(!s1.isEmpty()|| !s2.isEmpty()){
            int i1=0;
            int i2=0;
            if(!s1.isEmpty()){
                i1=s1.pop();
            }
            if(!s2.isEmpty()){
                i2=s2.pop();
            }
            if(i1+i2+flag>=10){
                q=new ListNode(i1+i2+flag-10);
                flag=1;
                q.next=p;
                p=q;
            }
            else{
                q=new ListNode(i1+i2+flag);
                flag=0;
                q.next=p;
                p=q;
            }
        }
        if(flag==1){
            q=new ListNode(1);
            flag=0;
            q.next=p;
            p=q;
        }
        return p;
    }
}
